Ana içeriğe geç

Socket.IO Nedir?

Socket.IO, web uygulamalarında gerçek zamanlı, çift yönlü ve olay tabanlı iletişim sağlayan güçlü bir JavaScript kütüphanesidir. WebSocket protokolü üzerine inşa edilmiş olup, güvenilir ve geniş tarayıcı desteği sunar.

ipucu

Socket.IO, WebSocket'in desteklenmediği durumlarda otomatik olarak alternatif iletişim yöntemlerine geçiş yapabilir (Long Polling, vb.).

Temel Özellikler

1. Otomatik Yeniden Bağlanma

const socket = io({
reconnection: true,
reconnectionDelay: 1000,
reconnectionDelayMax: 5000,
reconnectionAttempts: 5
});

2. Paket Tamponu

Bağlantı kopukluğunda veri kaybını önler:

socket.volatile.emit('ping', 'Bu mesaj bağlantı yoksa kaybolabilir');

3. Odalar ve Ad Alanları

// Server tarafı
io.on('connection', (socket) => {
socket.join('oda1');
io.to('oda1').emit('yeni-kullanıcı', 'Kullanıcı odaya katıldı');
});

Kurulum ve Temel Kullanım

Server Tarafı Kurulum

const express = require('express');
const { createServer } = require('http');
const { Server } = require('socket.io');

const app = express();
const httpServer = createServer(app);
const io = new Server(httpServer, {
cors: {
origin: "http://localhost:3000"
}
});

io.on('connection', (socket) => {
console.log('Yeni kullanıcı bağlandı');
});

httpServer.listen(3000);

Client Tarafı Kullanım

import { io } from "socket.io-client";

const socket = io("http://localhost:3000");

socket.on("connect", () => {
console.log('Sunucuya bağlandı');
});

socket.emit('mesaj', 'Merhaba Dünya!');

İleri Düzey Özellikler

1. Middleware Kullanımı

io.use((socket, next) => {
if (socket.handshake.auth.token) {
next();
} else {
next(new Error("Kimlik doğrulama başarısız"));
}
});
tehlike

Middleware'ler bağlantı kurulmadan önce çalıştırılır. Hata yönetimi önemlidir!

2. Özel Olaylar

// Server
io.on('connection', (socket) => {
socket.on('özel-olay', (data, callback) => {
// İşlem
callback({ status: 'başarılı' });
});
});

// Client
socket.emit('özel-olay', { data: 'test' }, (response) => {
console.log(response.status);
});

3. Odalar ve Yayın

io.on('connection', (socket) => {
// Belirli bir odaya mesaj gönderme
socket.to('oda1').emit('olay', 'mesaj');

// Gönderen hariç herkese yayın
socket.broadcast.emit('olay', 'mesaj');
});

En İyi Pratikler

  1. Hata Yönetimi
socket.on('connect_error', (error) => {
console.log('Bağlantı hatası:', error);
});
  1. Bağlantı Durumu Kontrolü
if (socket.connected) {
socket.emit('olay', 'mesaj');
}
bilgi

Üretim ortamında SSL/TLS kullanmak güvenlik açısından önemlidir.

Örnek Kullanım Senaryoları

  1. Gerçek zamanlı sohbet uygulamaları
  2. Çok oyunculu oyunlar
  3. Canlı analitik panelleri
  4. İşbirlikçi döküman düzenleme
  5. IOT cihaz izleme sistemleri

Performans İpuçları

1. Binary Veriler

socket.binary(true).emit('binary-olay', binaryData);

2. Sıkıştırma

const io = new Server(httpServer, {
compression: true
});

Sonuç

Socket.IO, gerçek zamanlı web uygulamaları geliştirmek için güçlü ve güvenilir bir çözümdür. WebSocket protokolünün tüm avantajlarını sunarken, geniş tarayıcı desteği ve otomatik geri dönüş mekanizmaları ile öne çıkar.

Başlarken

Daha detaylı bilgi için resmi Socket.IO dokümantasyonunu inceleyebilirsiniz.